Nginx负载均衡

java分享会

分享人:程凯

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

nginx 这个轻量级、高性能的 web server 主要可以干两件事情:直接作为http server;另外一个功能就是作为反向代理服务器实现负载均

2.知识剖析

nginx的负载均衡的几种策略:

1.轮询(默认);每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 2.weight;指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 3.ip_hash;每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 4.fair(第三方);按后端服务器的响应时间来分配请求,响应时间短的优先分配。 5.url_hash(第三方)按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

3.常见问题

1.为什么要用nginx负载均衡?

2.nginx的优缺点?

4.解决方案

1.为什么要用nginx负载均衡?

简单来说就是为了在服务器端宕机后,不会导致整个服务不能使用,负载均衡需要在两台以上的服务器上才能实现。

2.nginx的优缺点?

优点:(1)Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能

(2)Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来

(3)可以承担高负载压力且稳定,在硬件不差的情况下一般能支撑几万次的并发量

(4)Nginx也可作为静态网页和图片服务器,这方面的性能也无对手。

缺点:(1)Nginx仅能支持http、https和Email协议,这样就在适用范围上面小些

(2)对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测

5.编码实战

6.扩展思考

Session问题: 当我们确定一系列负载的服务器后,那我们的WEB站点会分布到这些服务器上。 这个时候如果采用Test2 每一次请求随机访问任何一台服务器上,这样导致你访问A服务器后, 下一次请求又突然转到B服务器上。这个时候与A服务器建立的Session,传到B站点服务器肯定是无法正常响应的。

7.参考文献

百度

8.更多讨论

鸣谢

感谢观看,如有出错,恳请指正

BY : 程凯